package pe.com.bbva.ge.vista.vaadin.ui;

import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;

import pe.com.bbva.ge.domain.configuracion.Parametro;
import pe.com.bbva.ge.domain.configuracion.Valor;
//import pe.com.bbva.reniec.utileria.BeanValidar;
import pe.com.bbva.ge.negocio.ConfiguracionNegocio;
import pe.com.bbva.ge.utileria.Constante;

import com.cdainfo.vaadin.TablaFiltro;
import com.cdainfo.vaadin.container.CDAIndexedContainer;
import com.cdainfo.vaadin.event.TablaFiltroEnterEvent;
import com.cdainfo.vaadin.listener.TablaFiltroEnterListener;
import com.vaadin.annotations.AutoGenerated;
import com.vaadin.data.Item;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.BeanItemContainer;
import com.vaadin.event.FieldEvents.TextChangeEvent;
import com.vaadin.event.FieldEvents.TextChangeListener;
import com.vaadin.event.ShortcutAction.KeyCode;
import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.Button.ClickEvent;
import com.vaadin.ui.Button.ClickListener;
import com.vaadin.ui.ComboBox;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.ui.TextArea;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

public class ParametrosUI extends VentanaUI implements TextChangeListener, ClickListener,TablaFiltroEnterListener {

	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */

	@AutoGenerated
	private VerticalLayout mainLayout;

	@AutoGenerated
	private VerticalLayout pnlLayout;

	@AutoGenerated
	private HorizontalLayout pnlContenidoLayout;

	@AutoGenerated
	private VerticalLayout pnlParametroContenido;

	@AutoGenerated
	private HorizontalLayout pnlBotonContenido;

	@AutoGenerated
	private Button btnEliminarParametro;

	@AutoGenerated
	private Button btnGestionParametro;

	@AutoGenerated
	private HorizontalLayout lytEstado;

	@AutoGenerated
	private ComboBox cmbEstado;

	@AutoGenerated
	private Label label_4;

	@AutoGenerated
	private HorizontalLayout lytValor;

	@AutoGenerated
	private TextField txtValor;

	@AutoGenerated
	private Label label_3;

	@AutoGenerated
	private HorizontalLayout lytDescripcion;

	@AutoGenerated
	private TextArea txtADescripcion;

	@AutoGenerated
	private HorizontalLayout lytNombre;

	@AutoGenerated
	private TextField txtNombre;

	@AutoGenerated
	private Label label_2;

	@AutoGenerated
	private HorizontalLayout horizontalLayout_1;

	@AutoGenerated
	private TextField txtCodigo;

	@AutoGenerated
	private Label label_1;

	@AutoGenerated
	private Label lblParametro;

	@AutoGenerated
	private VerticalLayout pnlTablaContenido;

	@AutoGenerated
	private TablaFiltro tblParametro;

	private static final long serialVersionUID = -5744214819591057526L;

	@Autowired
	private ConfiguracionNegocio genericoNegocio;	
	private boolean flagNuevo;	
	private List<Valor> estados;	
	private String codigo;	
	CDAIndexedContainer container;
	Window modalEliminar;
	//0=nombre; 1=codigo; 2=valor; 3=estado
	public static final String NOMBRE		="nombre";
	public static final String CODIGO		="codigo";
	public static final String VALOR		="valor";
	public static final String ESTADO		="estado.nombre";
	
	public ParametrosUI() {
		buildMainLayout();
		setCompositionRoot(mainLayout);
		debugId();
	}

	private void debugId(){
		mainLayout.setDebugId("mainLayout");
		pnlLayout.setDebugId("pnlLayout");
		pnlContenidoLayout.setDebugId("pnlContenidoLayout");
		pnlParametroContenido.setDebugId("pnlParametroContenido");
		pnlBotonContenido.setDebugId("pnlBotonContenido");
		btnEliminarParametro.setDebugId("btnEliminarParametro");
		btnGestionParametro.setDebugId("btnGestionParametro");
		cmbEstado.setDebugId("cmbEstado");
		txtValor.setDebugId("txtValor");
		txtADescripcion.setDebugId("txtADescripcion");
		txtNombre.setDebugId("txtNombre");
		txtCodigo.setDebugId("txtCodigo");
		lblParametro.setDebugId("lblParametro");
		pnlTablaContenido.setDebugId("pnlTablaContenido");
		//pnlTabla.setDebugId("pnlTabla");
		tblParametro.setDebugId("tblParametro");
//		pnlFiltroTabla.setDebugId("pnlFiltroTabla");
//		txtFiltroEstado.setDebugId("txtFiltroEstado");
//		txtFiltroValor.setDebugId("txtFiltroValor");
//		txtFiltroNombre.setDebugId("txtFiltroNombre");
//		txtFiltroCodigo.setDebugId("txtFiltroCodigo");

	}
	
	//@PostConstruct public
	public void postConstruccion() {
		habilitarEdicion(false);

		List<Parametro> parametros = genericoNegocio.buscarParametros(null);
		cargarParametros(parametros, true);
		
		tblParametro.setSelectable(true);
		tblParametro.setImmediate(true);
		tblParametro.setNullSelectionAllowed(true);
		tblParametro.setNullSelectionItemId(null);
		
		txtADescripcion.setNullRepresentation("");
		
		tblParametro.addListener(new ValueChangeListener() {
			private static final long serialVersionUID = 7962790507398071986L;

			@Override
			public void valueChange(ValueChangeEvent event) {
				boolean esModoNuevo = tblParametro.getValue() == null;
				if(esModoNuevo){
					tblParametro.setValue(null);
					habilitarEdicion(!esModoNuevo);
					limpiar();
				}
				else
				{
					Item item = tblParametro.getItem(tblParametro.getValue());
					codigo=(String)item.getItemProperty("codigo").getValue();
					txtCodigo.setValue(item.getItemProperty("codigo").getValue());
					txtNombre.setValue(item.getItemProperty("nombre").getValue());
					txtADescripcion.setValue(item.getItemProperty("descripcion").getValue());
					txtValor.setValue(item.getItemProperty("valor").getValue());
					
					String estadoSel=(String)item.getItemProperty("estado.nombre").getValue();
					
					for (Valor estado : estados) {
						if(estado.getNombre().equals(estadoSel))
						{
							cmbEstado.select(estado);
							break;
						}
						
					}
					
					habilitarEdicion(!esModoNuevo);
					
				}
			}
		});
		tblParametro.addListener((TablaFiltroEnterListener)this);
		cmbEstado.setInputPrompt("Estado");				
		estados = genericoNegocio.obtenerValores(Constante.LISTA.CODIGO.REGISTRO_ESTADO);		
		BeanItemContainer<Valor> bicEstados = new BeanItemContainer<Valor>(Valor.class,  estados);		
		cmbEstado.setContainerDataSource(bicEstados);
		cmbEstado.setItemCaptionPropertyId("nombre");
		

		btnGestionParametro.addListener((ClickListener)this);
		btnEliminarParametro.addListener((ClickListener)this);
	}	
	
	private void habilitarEdicion(boolean flag){
		flagNuevo = !flag;
		btnEliminarParametro.setVisible(flag);
		if(flag){
			btnGestionParametro.setCaption("Actualizar");
		}else{
			btnGestionParametro.setCaption("Crear");
		}
	}
	
	private void limpiar(){
		txtCodigo.setValue("");
		txtNombre.setValue("");
		txtADescripcion.setValue("");
		txtValor.setValue("");
		cmbEstado.setValue(null);		
		
	}
	
	private void cargarParametros(List<Parametro> parametros, boolean flagLimpiar){
		if(container!=null){
			container.removeAllItems();
		}else{
			container = new CDAIndexedContainer();			
			container.addContainerProperty("codigo", String.class, null, "Código", CDAIndexedContainer.TipoComponente.TEXT, true, 92);
			container.addContainerProperty("nombre", String.class, null, "Nombre", CDAIndexedContainer.TipoComponente.TEXT, true, 187);
			container.addContainerProperty("descripcion", String.class, null);
			container.addContainerProperty("valor", String.class, null, "Valor", CDAIndexedContainer.TipoComponente.TEXT, true, 137);
			container.addContainerProperty("estado.nombre", String.class, null, "Estado", CDAIndexedContainer.TipoComponente.TEXT, true, 105);			
			tblParametro.setContainerDataSource(container);
		}
		int con=1;
		for (Parametro parametro : parametros) {
			Item item = container.addItem(con++);
            item.getItemProperty("codigo").setValue(parametro.getCodigo());
            item.getItemProperty("nombre").setValue(parametro.getNombre());
            item.getItemProperty("descripcion").setValue(parametro.getDescripcion());
            item.getItemProperty("valor").setValue(parametro.getValor());
            item.getItemProperty("estado.nombre").setValue(parametro.getEstado() == null ? null :parametro.getEstado().getNombre());
		}		
	}

	@Override
	public void textChange(TextChangeEvent event) {
		/*Parametro parametro = new Parametro();
		if(event.getSource().equals(txtFiltroCodigo))
		{
			
			if(StringUtils.isNotBlank(event.getText()))
			{
				parametro.setCodigo(event.getText());
			}
			if(StringUtils.isNotBlank(txtFiltroNombre.getValue().toString()))
			{
				parametro.setNombre(txtFiltroNombre.getValue().toString());
			}
			if(StringUtils.isNotBlank(txtFiltroValor.getValue().toString()))
			{
				parametro.setValor(txtFiltroValor.getValue().toString());
			}
			if(StringUtils.isNotBlank(txtFiltroEstado.getValue().toString()))
			{
				Valor estado = new Valor();
				estado.setNombre(txtFiltroEstado.getValue().toString());
				parametro.setEstado(estado);
			}
		}
		if(event.getSource().equals(txtFiltroNombre))
		{
			if(StringUtils.isNotBlank(txtFiltroCodigo.getValue().toString()))
			{
				parametro.setCodigo(txtFiltroCodigo.getValue().toString());
			}
			if(StringUtils.isNotBlank(event.getText()))
			{
				parametro.setNombre(event.getText());
			}
			if(StringUtils.isNotBlank(txtFiltroValor.getValue().toString()))
			{
				parametro.setValor(txtFiltroValor.getValue().toString());
			}
			if(StringUtils.isNotBlank(txtFiltroEstado.getValue().toString()))
			{
				Valor estado = new Valor();
				estado.setNombre(txtFiltroEstado.getValue().toString());
				parametro.setEstado(estado);
			}
		}
		if(event.getSource().equals(txtFiltroValor))
		{
			if(StringUtils.isNotBlank(txtFiltroCodigo.getValue().toString()))
			{
				parametro.setCodigo(txtFiltroCodigo.getValue().toString());
			}
			if(StringUtils.isNotBlank(txtFiltroNombre.getValue().toString()))
			{
				parametro.setNombre(txtFiltroNombre.getValue().toString());
			}
			if(StringUtils.isNotBlank(event.getText()))
			{
				parametro.setValor(event.getText());
			}
			if(StringUtils.isNotBlank(txtFiltroEstado.getValue().toString()))
			{
				Valor estado = new Valor();
				estado.setNombre(txtFiltroEstado.getValue().toString());
				parametro.setEstado(estado);
			}
		}
		if(event.getSource().equals(txtFiltroEstado))
		{
			if(StringUtils.isNotBlank(txtFiltroCodigo.getValue().toString()))
			{
				parametro.setCodigo(txtFiltroCodigo.getValue().toString());
			}
			if(StringUtils.isNotBlank(txtFiltroNombre.getValue().toString()))
			{
				parametro.setNombre(txtFiltroNombre.getValue().toString());
			}
			if(StringUtils.isNotBlank(txtFiltroValor.getValue().toString()))
			{
				parametro.setValor(txtFiltroValor.getValue().toString());
			}
			if(StringUtils.isNotBlank(event.getText()))
			{
				Valor estado = new Valor();
				estado.setNombre(event.getText());
				parametro.setEstado(estado);
			}
		}
		List<Parametro> parametros = genericoNegocio.buscarParametros(parametro);
		cargarParametros(parametros, false);
		limpiar();
		habilitarEdicion(false);*/
	}

	@Override
	public void buttonClick(ClickEvent event) {
		if(event.getButton().equals(btnGestionParametro)){
			buttonClickGestion();
		}
		if(event.getButton().equals(btnEliminarParametro)){
			buttonClickEliminar();
		}
	}	
	
	private void buttonClickGestion(){
		Parametro parametro = new Parametro();
		parametro.setCodigo(txtCodigo.getValue().toString().trim());
		parametro.setNombre(txtNombre.getValue().toString().trim());
		parametro.setDescripcion(StringUtils.trimToEmpty(txtADescripcion.getValue() != null ? txtADescripcion.getValue().toString() : StringUtils.EMPTY));
		parametro.setValor(txtValor.getValue().toString().trim());			
		parametro.setEstado((Valor) cmbEstado.getValue());		
		Parametro busParametro=genericoNegocio.obtenerParametroxCodigo(parametro.getCodigo());
		if(busParametro!=null){
			genericoNegocio.modificar(parametro);
		}else{
			genericoNegocio.crear(parametro);
		}	
		refrescar();
	}
	
	private void buttonClickEliminar(){
		Parametro parametro = new Parametro();
		parametro.setCodigo(txtCodigo.getValue().toString());
		if(parametro!=null){
			modalEliminar(parametro);
		}		
	}
	
	public void refrescar(){
		habilitarEdicion(false);
		limpiar();
		List<Parametro> parametros = genericoNegocio.buscarParametros(null);
		cargarParametros(parametros, true);
	}
	
	public void modalEliminar(Parametro parametro){		
		modalEliminar=new Window("Eliminar");
		ConfirmacionEliminarUI confirmacionEliminarUI=new ConfirmacionEliminarUI(this,parametro,"parametro");
		modalEliminar.setContent(confirmacionEliminarUI);
		modalEliminar.center();
		modalEliminar.setModal(true);
		modalEliminar.setDraggable(false);
		modalEliminar.setClosable(true);
		modalEliminar.setResizable(false);
		modalEliminar.setCloseShortcut(KeyCode.ESCAPE, null);
		getApplication().getMainWindow().addWindow(modalEliminar);
	}
	@Override
	public void handleEnterAction(TablaFiltroEnterEvent event) {
		Map<String, Object> datosBusqueda=event.getDatos();
		buscarParametros(datosBusqueda);
	}
	
	public void buscarParametros(Map<String, Object> datosBusqueda){
		Iterator<String> llaveBusqueda=datosBusqueda.keySet().iterator();
		Parametro parametro=new Parametro();
		while(llaveBusqueda.hasNext()){
			String llave = llaveBusqueda.next();
			Object dato = datosBusqueda.get(llave);
			if(llave.equals(NOMBRE)){
				parametro.setNombre(dato.toString());
			}else if(llave.equals(CODIGO)){
				parametro.setCodigo(dato.toString());
			}else if(llave.equals(VALOR)){
				parametro.setValor(dato.toString());
			}else if(llave.equals(ESTADO)){
				Valor valorEstado=new Valor();
				valorEstado.setNombre(dato.toString());
				parametro.setEstado(valorEstado);
			}
		}
		List<Parametro> lstParametros=genericoNegocio.buscarParametros(parametro);
		cargarParametros(lstParametros, true);
	}

	@AutoGenerated
	private VerticalLayout buildMainLayout() {
		// common part: create layout
		mainLayout = new VerticalLayout();
		mainLayout.setImmediate(false);
		mainLayout.setWidth("100%");
		mainLayout.setHeight("100%");
		mainLayout.setMargin(false);
		
		// top-level component properties
		setWidth("100.0%");
		setHeight("100.0%");
		
		// pnlLayout
		pnlLayout = buildPnlLayout();
		mainLayout.addComponent(pnlLayout);
		
		return mainLayout;
	}

	@AutoGenerated
	private VerticalLayout buildPnlLayout() {
		// common part: create layout
		pnlLayout = new VerticalLayout();
		pnlLayout.setImmediate(false);
		pnlLayout.setWidth("-1px");
		pnlLayout.setHeight("325px");
		pnlLayout.setMargin(false);
		
		// pnlContenidoLayout
		pnlContenidoLayout = buildPnlContenidoLayout();
		pnlLayout.addComponent(pnlContenidoLayout);
		
		return pnlLayout;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlContenidoLayout() {
		// common part: create layout
		pnlContenidoLayout = new HorizontalLayout();
		pnlContenidoLayout.setImmediate(false);
		pnlContenidoLayout.setWidth("820px");
		pnlContenidoLayout.setHeight("-1px");
		pnlContenidoLayout.setMargin(false);
		
		// pnlTablaContenido
		pnlTablaContenido = buildPnlTablaContenido();
		pnlContenidoLayout.addComponent(pnlTablaContenido);
		
		// pnlParametroContenido
		pnlParametroContenido = buildPnlParametroContenido();
		pnlContenidoLayout.addComponent(pnlParametroContenido);
		pnlContenidoLayout.setExpandRatio(pnlParametroContenido, 1.0f);
		
		return pnlContenidoLayout;
	}

	@AutoGenerated
	private VerticalLayout buildPnlTablaContenido() {
		// common part: create layout
		pnlTablaContenido = new VerticalLayout();
		pnlTablaContenido.setImmediate(false);
		pnlTablaContenido.setWidth("620px");
		pnlTablaContenido.setHeight("-1px");
		pnlTablaContenido.setMargin(false);
		
		// tblParametro
		tblParametro = new TablaFiltro();
		tblParametro.setImmediate(false);
		tblParametro.setWidth("600px");
		tblParametro.setHeight("300px");
		pnlTablaContenido.addComponent(tblParametro);
		
		return pnlTablaContenido;
	}

	@AutoGenerated
	private VerticalLayout buildPnlParametroContenido() {
		// common part: create layout
		pnlParametroContenido = new VerticalLayout();
		pnlParametroContenido.setImmediate(false);
		pnlParametroContenido.setWidth("200px");
		pnlParametroContenido.setHeight("-1px");
		pnlParametroContenido.setMargin(false);
		
		// lblParametro
		lblParametro = new Label();
		lblParametro.setImmediate(false);
		lblParametro.setWidth("-1px");
		lblParametro.setHeight("-1px");
		lblParametro.setValue("Parámetro");
		pnlParametroContenido.addComponent(lblParametro);
		
		// horizontalLayout_1
		horizontalLayout_1 = buildHorizontalLayout_1();
		pnlParametroContenido.addComponent(horizontalLayout_1);
		
		// lytNombre
		lytNombre = buildLytNombre();
		pnlParametroContenido.addComponent(lytNombre);
		
		// lytDescripcion
		lytDescripcion = buildLytDescripcion();
		pnlParametroContenido.addComponent(lytDescripcion);
		
		// lytValor
		lytValor = buildLytValor();
		pnlParametroContenido.addComponent(lytValor);
		
		// lytEstado
		lytEstado = buildLytEstado();
		pnlParametroContenido.addComponent(lytEstado);
		
		// pnlBotonContenido
		pnlBotonContenido = buildPnlBotonContenido();
		pnlParametroContenido.addComponent(pnlBotonContenido);
		pnlParametroContenido.setComponentAlignment(pnlBotonContenido,
				new Alignment(20));
		
		return pnlParametroContenido;
	}

	@AutoGenerated
	private HorizontalLayout buildHorizontalLayout_1() {
		// common part: create layout
		horizontalLayout_1 = new HorizontalLayout();
		horizontalLayout_1.setImmediate(false);
		horizontalLayout_1.setWidth("-1px");
		horizontalLayout_1.setHeight("-1px");
		horizontalLayout_1.setMargin(false);
		horizontalLayout_1.setSpacing(true);
		
		// label_1
		label_1 = new Label();
		label_1.setImmediate(false);
		label_1.setWidth("45px");
		label_1.setHeight("-1px");
		label_1.setValue("Codigo:");
		horizontalLayout_1.addComponent(label_1);
		horizontalLayout_1.setComponentAlignment(label_1, new Alignment(9));
		
		// txtCodigo
		txtCodigo = new TextField();
		txtCodigo.setStyleName("fieldRequired");
		txtCodigo.setCaption(" ");
		txtCodigo.setImmediate(false);
		txtCodigo.setWidth("140px");
		txtCodigo.setHeight("-1px");
		txtCodigo.setInputPrompt("Código");
		horizontalLayout_1.addComponent(txtCodigo);
		
		return horizontalLayout_1;
	}

	@AutoGenerated
	private HorizontalLayout buildLytNombre() {
		// common part: create layout
		lytNombre = new HorizontalLayout();
		lytNombre.setImmediate(false);
		lytNombre.setWidth("-1px");
		lytNombre.setHeight("-1px");
		lytNombre.setMargin(false);
		lytNombre.setSpacing(true);
		
		// label_2
		label_2 = new Label();
		label_2.setImmediate(false);
		label_2.setWidth("45px");
		label_2.setHeight("-1px");
		label_2.setValue("Nombre:");
		lytNombre.addComponent(label_2);
		lytNombre.setComponentAlignment(label_2, new Alignment(9));
		
		// txtNombre
		txtNombre = new TextField();
		txtNombre.setStyleName("fieldRequired");
		txtNombre.setCaption(" ");
		txtNombre.setImmediate(false);
		txtNombre.setWidth("140px");
		txtNombre.setHeight("-1px");
		txtNombre.setInputPrompt("Nombre");
		lytNombre.addComponent(txtNombre);
		
		return lytNombre;
	}

	@AutoGenerated
	private HorizontalLayout buildLytDescripcion() {
		// common part: create layout
		lytDescripcion = new HorizontalLayout();
		lytDescripcion.setImmediate(false);
		lytDescripcion.setWidth("-1px");
		lytDescripcion.setHeight("-1px");
		lytDescripcion.setMargin(false);
		lytDescripcion.setSpacing(true);
		
		// txtADescripcion
		txtADescripcion = new TextArea();
		txtADescripcion.setCaption("Descripcion");
		txtADescripcion.setImmediate(false);
		txtADescripcion.setWidth("200px");
		txtADescripcion.setHeight("74px");
		txtADescripcion.setInputPrompt("Descripción");
		lytDescripcion.addComponent(txtADescripcion);
		
		return lytDescripcion;
	}

	@AutoGenerated
	private HorizontalLayout buildLytValor() {
		// common part: create layout
		lytValor = new HorizontalLayout();
		lytValor.setImmediate(false);
		lytValor.setWidth("-1px");
		lytValor.setHeight("-1px");
		lytValor.setMargin(false);
		lytValor.setSpacing(true);
		
		// label_3
		label_3 = new Label();
		label_3.setImmediate(false);
		label_3.setWidth("45px");
		label_3.setHeight("-1px");
		label_3.setValue("Valor:");
		lytValor.addComponent(label_3);
		lytValor.setComponentAlignment(label_3, new Alignment(9));
		
		// txtValor
		txtValor = new TextField();
		txtValor.setStyleName("fieldRequired");
		txtValor.setCaption(" ");
		txtValor.setImmediate(false);
		txtValor.setWidth("140px");
		txtValor.setHeight("-1px");
		txtValor.setInputPrompt("Valor");
		lytValor.addComponent(txtValor);
		
		return lytValor;
	}

	@AutoGenerated
	private HorizontalLayout buildLytEstado() {
		// common part: create layout
		lytEstado = new HorizontalLayout();
		lytEstado.setImmediate(false);
		lytEstado.setWidth("-1px");
		lytEstado.setHeight("-1px");
		lytEstado.setMargin(false);
		lytEstado.setSpacing(true);
		
		// label_4
		label_4 = new Label();
		label_4.setImmediate(false);
		label_4.setWidth("45px");
		label_4.setHeight("-1px");
		label_4.setValue("Estado:");
		lytEstado.addComponent(label_4);
		lytEstado.setComponentAlignment(label_4, new Alignment(9));
		
		// cmbEstado
		cmbEstado = new ComboBox();
		cmbEstado.setCaption("      ");
		cmbEstado.setImmediate(false);
		cmbEstado.setWidth("140px");
		cmbEstado.setHeight("-1px");
		lytEstado.addComponent(cmbEstado);
		
		return lytEstado;
	}

	@AutoGenerated
	private HorizontalLayout buildPnlBotonContenido() {
		// common part: create layout
		pnlBotonContenido = new HorizontalLayout();
		pnlBotonContenido.setImmediate(false);
		pnlBotonContenido.setWidth("-1px");
		pnlBotonContenido.setHeight("40px");
		pnlBotonContenido.setMargin(false);
		pnlBotonContenido.setSpacing(true);
		
		// btnGestionParametro
		btnGestionParametro = new Button();
		btnGestionParametro.setCaption("Crear");
		btnGestionParametro.setImmediate(true);
		btnGestionParametro.setWidth("90px");
		btnGestionParametro.setHeight("-1px");
		pnlBotonContenido.addComponent(btnGestionParametro);
		pnlBotonContenido.setComponentAlignment(btnGestionParametro,
				new Alignment(9));
		
		// btnEliminarParametro
		btnEliminarParametro = new Button();
		btnEliminarParametro.setCaption("Eliminar");
		btnEliminarParametro.setImmediate(true);
		btnEliminarParametro.setWidth("90px");
		btnEliminarParametro.setHeight("-1px");
		pnlBotonContenido.addComponent(btnEliminarParametro);
		pnlBotonContenido.setComponentAlignment(btnEliminarParametro,
				new Alignment(10));
		
		return pnlBotonContenido;
	}

}
